﻿using System;
using Csharp哈希表;

namespace Csharp泛型方法
{

    //自定义一个泛型类
    class MyTest<T> 
    {
        T a;
        // 泛型的构造函数
        public MyTest(T a) 
        {
            this.a = a;
        }
        public void showname(T a)
        {
            
            Console.WriteLine(a);
        }
        

    }


    class Program
    {
        static void Main(string[] args)
        {
            //Console.WriteLine(Add<int>(10, 20));//答案是1020

            //Console.WriteLine(Add1<float,int,string>(12.33f,10, "acd"));

            string temp=Add1<weapon, string, int>(new weapon("屠龙宝刀"), "招数：飞龙在天 攻击力：", 100);
            //Console.WriteLine(temp);
            
            

            MyTest<weapon> mt = new MyTest<weapon>(new weapon("霜之哀伤"));

            //mt.showname(new weapon("shuangzhiais"));
            
            
            //类型替代符的作用:可以让我们先不定义数据类型，只管逻辑
            
            
            
        }

        public static string Add<T>(T a, T b) //这一个方法可以任意用于字符串拼接
        {
            return a.ToString() + b.ToString();
        }



        //public static string sum(int a, int b)
        //{
        //    return a.ToString() + b.ToString();
        //}

        //public static float Add(float a, float b)
        //{
        //    return a + b;
        //}

        //方法定义好后，在调用泛型方法时，应该在<>括号内填上对应的类型
        //当你的方法适用于所有数据类型的时候，可以使用泛型来代替object类型，以节省资源


        #region
        //建立一个可以拼接三个参数为一个字符串的泛型方法
        //三个参数的数据类型不一样
        //在使用的时候，方法名<参数>

        public static string Add1<T, S, K>(T a, S b, K C)
        {
            return a.ToString() + b.ToString() + C.ToString();
        }

        #region 泛型类
        //class 类名<T> 
        //{
        //    T 成员;
        //}
        // 我们可以在类名后使用<类型替代符>来定义一个泛型类

        #endregion



        #endregion
    }
}
